/**
 * 有符号整数
 *   short int      16 bits
 *   int            16 bits
 *   long int       32 bits
 *   long long int  64 bits
 * 
 * 从技术上讲，bool和char类型被认为是整型（因为这些类型将它们的值存储为整数值）。
 * 
 * 
 * 默认情况下，C++ 中的整数是有符号的，这意味着数字的符号存储为数字的一部分。因此，有符号整数可以同时包含正数和负数（以及 0）。
 * 
 * 首选不使用int后缀或signed前缀的速记类型。
 * 
 * 整数变量的范围由两个因素决定：其大小（以位为单位）以及是否有符号。
 * 根据定义，8 位有符号整数的范围为 -128 到 127。这意味着有符号整数可以安全地存储 -128 到 127（含）之间的任何整数值。
 *   8 位整数包含 8 位。2 8是 256，因此一个 8 位整数可以容纳 256 个可能的值。-128 到 127 之间（含 -128 和 127）有 256 个可能的值。
 *   7 位用于保存数字的大小，1 位用于保存符号。
 * 
 * n 位有符号变量的范围为 -(2^(n-1)) 到 2^(n-1)-1
 * 
 * 溢出：将导致未定义行为
 * 
 * 使用整数除法时要小心，因为您会丢失商的所有小数部分。但是，如果这是您想要的，则可以安全地使用整数除法，因为结果是可预测的。
 * 
 */


#include <iostream>

int main() {
    short s;      // prefer "short" instead of "short int"
    int i;
    long l;       // prefer "long" instead of "long int"
    long long ll; // prefer "long long" instead of "long long int"



    // assume 4 byte integers
    int x { 2'147'483'647 }; // the maximum value of a 4-byte signed integer
    std::cout << x << '\n';

    ++x; // integer overflow, undefined behavior
    std::cout << x << '\n';

    std::cout << -13 / 5 << "\n";

    return 0;
}